const os = require('os')
// console.log(os.arch()) // cpu架构：x64
// console.log(os.cpus()) // cpu信息
// console.log(os.endianness()) // cpu的字节序
// console.log(os.freemem()) // 空闲的系统内存量(单位字节)
// console.log(os.homedir()) // 返回当前用户的主目录的字符串路径
// console.log(os.hostname()) // 操作系统的主机名: DESKTOP-H7MUOT0
// console.log(os.networkInterfaces()) //分配了网络地址的网络接口
// console.log(os.platform()) // 标识操作系统平台: win32
// console.log(os.release()) // 以字符串的形式返回操作系统
// console.log(os.tmpdir()) // 以字符串的形式返回操作系统的默认临时文件目录
// console.log(os.totalmem()) // 以整数的形式返回系统的内存总量(单位字节)
// console.log(os.type()) // 返回操作系统名字，在 Linux 上返回 'Linux'，在 macOS 上返回 'Darwin'，在 Windows 上返回 'Windows_NT'
// console.log(os.uptime()) // 返回系统的正常运行时间（以秒为单位）
// console.log(os.userInfo()) // 返回关于当前有效用户的信息

const fs = require('fs')
const path = require('path')
try {
  // 创建 `/test/test_1/test_1_1`，不管 `/test` 和 `/test/test_1` 是否存在。
  // 加上{ recursive: true }不会报：EEXIST: file already exists, mkdir '/test1/test_1/test_1_1'
  // fs.mkdirSync('test/test_1/test_1_1', { recursive: true })
  // console.log(fs.readdirSync('test')) // 读取目录：返回文件或者文件夹列表
  // console.log(fs.readdirSync('test/test_1')) // 读取下一级目录
  // console.log(fs.readFileSync('test/1.txt').toString()) // 读取文件内容
  // fs.rmdirSync('test/test_1/test_1_1') // 删除目录：默认删除最后一层，如果想要递归删除：加上 {recursive: true}
  // fs.renameSync('test/1.txt', 'test/2.lic') // 将文件重命名
  // fs.renameSync('test/test_1', 'test/test_2') // 将目录重命名
  // fs.appendFileSync('test/1.txt', '追加的数据') // 同步地将数据追加到文件，如果文件尚不存在则创建该文件。
  // fs.copyFileSync('test/1.txt', 'test/2.txt') // 同步地将 1.txt 拷贝到 2.txt，可以使用该函数实现文件移动功能
  // fs.accessSync('test/1.txt', fs.constants.R_OK | fs.constants.W_OK) // 同步地判断对 path 指定的文件或目录的权限，同时也用于判断文件或者目录是否存在
  // fs.writeFileSync('test/文件.txt', new Uint8Array(Buffer.from('Node.js 中文网'))) // data 可以是字符串或 buffer
  // fs.writeFileSync('test/文件.txt', 'Node.js 中文网2')
} catch (error) {
  console.log(error.message)
}

/**
 * Events
 */
// const EventEmitter = require('events')
// class MyEmitter extends EventEmitter {}
// const myEmitter = new MyEmitter()
// myEmitter.on('event', () => {
//   console.log('触发事件')
// })
// myEmitter.emit('event')

/**
 * 查询字符串
 */
// const querystring = require('querystring')
// console.log(querystring.parse('foo=bar&abc=xyz&abc=123'))
// console.log(querystring.stringify({ foo: 'bar', abc: ['xyz', '123'] }))

/**
 * readline：逐行读取
 */
const readline = require('readline')
const { rawListeners } = require('process')
const rl = readline.createInterface({
  input: fs.createReadStream('test/1.txt')
})
rl.on('line', data => {
  console.log(data)
})
